본문으로 건너뛰기

16장: 버전 관리와 브랜치 관리

업무 경험이 적어 버전 관리 시스템에 대한 이해가 낮았지만, 깃허브를 사용한 블로그 작업을 하다 보니 기본 지식이 대력적으로 확립되었다. 여러 버전을 동시에 관리하기 보다 하나의 버전에서 기능별로 브랜치를 만들어 작업하면 높은 효율이 나오게 된다. 라는 것이 기본적인 개념으로 확립되었다.

Chapter 16은 버전 관리와 브랜치의 중요성과 구글에서 버전 관리를 하는 방식에 대해 설명하고 있다.

먼저 VCS(Version Control System)란 파일의 시간에 따른 변경 기록을 추적하는 시스템을 말하는데 파일들의 메타데이터를 관리하며, 이 메타데이터와 파일들의 버전별 복사본을 리포지터리(repo)라고 한다. 프로그래밍이라기 보다는 소프트웨어 엔지니어링에 가까운 개념이다.

원 버전 규칙을 따라서 개발하는 것이 중요하다고 한다. 여러 버전을 동시에 관리하는 것 보다 하나의 버전(트렁크)에서 개발을 계속하는 것이 효율적이다.구글은 모노리포 방식을 통해 원 버전 규칙을 유지하고 있다. 코드의 일관성을 유지할 수 있으며 효율적인 관리가 가능하고 충돌을 최소화 한다.

원 버전 규칙

  • 하나의 기본 버전 유지
  • 브랜치 사용
  • 버전 통합

SSOT(Single Source of Truth)는 단일 진실 공급원이라고 하는데 정보나 데이터는 하나의 신뢰할 수 있는 출처에서 유래해야 한다는 개념이다. 데이터의 일관성이 중요하다는 뜻.

중앙집중형 VCS vs 분산형 VCS

중앙집중형 VCS는 코드 변경 이력을 단일 중앙 서버에 저장하여 한 곳에서 정보를 관리하는 방식이며 적은 인원이 작업하는 방식에 적합했다. SSOT를 기본 개념으로 한다.

시대가 바뀌고 투입 인원이 늘어나면서 분산형 VCS가 떠오르게 되는데 각 개발자가 자신의 로컬스토리지에 변경 사항을 저장하고 중앙 서버와 동기화 하는 방식으로, 많은 인원이 동시에 작업하는 환경에 적합했다. SSOT를 기본 개념으로 하고 있지 않지만 잘 관리된 프로젝트는 브랜치 하나를 SSOT로 정하여 혼란의 여지를 없애고 작업한다.

해당 챕터를 읽고 버전 관리에 대한 기본적이 이해가 조금 늘어나게 되었다. 실제 대형 프로젝트에서 버전 관리하는 방법을 배우고 병합하는 과정을 익혀야 겠다고 생각했다.